package com.cpz.mybatisplus.service;

import java.io.IOException;

/**
 * @Transactional事务失效场景
 * @author cpz
 * @since 2022/09/24
 */
public interface UserTransactionInvalid {

    /**
     * 事务不回滚：1、私有方法
     */
    void privateMethod();

    /**
     * 事务不回滚：2、异常不匹配
     * @param isEnableRollbackException 是否抛出可以回滚的异常，反之抛出不可回滚异常
     */
    void exceptionType(boolean isEnableRollbackException) throws IOException;

    /**
     * 事务不回滚：3、内部方法调用
     */
    void internalMethod();

    /**
     * 事务不回滚：4、多线程
     * @param isThrowFromParentThread 是否从父线程抛出，反之为子线程抛出
     */
    void multiThread(boolean isThrowFromParentThread);
}
